#include<iostream>
using namespace std;
const int N = 1e5 + 10;
typedef long long LL;
int arr[N];
LL s[N];
int cnt[N];
int n, k;
int main()
{
	cin >> n >> k;
	for (int i = 1; i <= n; i++) {
		cin >> arr[i];
		s[i] = s[i - 1] + arr[i];
	}
	int ans = 0;
	for (int i = 1; i <= n; i++) {
		for (int j = 0; j <= 30; j++) {
			if (s[i] - (int)pow(k, j) >= 0) {
				cnt[s[i] - (int)pow(k, j)]++;
			}
		}	
		ans += cnt[i];
	}
	cout << ans << endl;
	return 0;
}	
//int main()
//{
//	cin >> n >> k;
//	for (int i = 1; i <= n; i++) {
//		cin >> arr[i];
//		s[i] = s[i - 1] + arr[i];
//	}
//	int ans = 0;
//	for (int i = 1; i <= n; i++) {
//		for (int j = 0; j <= i; j++) {
//			int x = s[i] - s[j];
//			for (int z = 0; z <= 30; z++) {
//				if ((int)(pow(k, z) == x)) {
//					ans++;
//				}
//			}
//		}
//	}
//	cout << ans << endl;
//	/*for (int i = 1; i <= n; i++) {
//		for (int j = 1; j <= 30; j++) {
//			if (s[i] - (int)pow(k, j) >= 0) {
//				hash1[s[i] - (int)pow(k, j)] = 1;
//			}
//		}
//	}
//	int ans = 0;
//	for (int i = 0; i <= n - 1; i++) {
//		int x = s[i];
//		if (hash1[x]) {
//			ans++;
//		}
//	}
//	cout << ans << endl;*/
//	return 0;
//}